package org.game;

import java.io.File;
import java.io.IOException;

import com.sojoys.artifact.build.data.SK_Generate;
import com.sojoys.artifact.build.data.decoder.SK_FileType;
import com.sojoys.artifact.build.data.decoder.SK_MysqlType;
import com.sojoys.artifact.manager.ContextManager;
import com.sojoys.artifact.manager.DataSourceManager;
import com.sojoys.artifact.manager.PropManager;

import jxl.Workbook;
import jxl.read.biff.BiffException;

/**
 * @author : DengYing
 * @CreateDate : 2017年4月10日 下午9:38:48
 * @Description ：DB代码生成器
 */
public class BuildDataModel {
	// 生成数据层的代码路径
	static final String PATH = "src/main/java/org/game/db/";
	static final String PKG = "org.game.db";

	public static void main(String[] args) {
		PropManager.use("app.properties");
		// 初始配置文件
		ContextManager.me().init("app-init.xml");
		/**
		 * SK_Config.getDesignDataSource() : 需要生成的数据库
		 * SK_Generate.getConfiguration() : 使用的模板文件路径 false :
		 * 是否是生成配置库(我把固定不变的表称之为配置库) SK_Generate.CACHE_REDIS_MYSQL : 生成的模式
		 * (占时有3种生成方式)
		 */
		// SK_Generate.run(SK_Config.getDesignDataSource(),PATH,
		// SK_Generate.getConfiguration(), false,SK_Generate.CACHE_MYSQL);
		boolean fileData = false;
		if (!fileData) {
			SK_Generate.run(DataSourceManager.me().getBuildSources(), PATH,PKG,
			SK_Generate.getConfiguration(), new SK_MysqlType(), false, SK_Generate.CACHE_MYSQL
			);//TODO 加表名

			// SK_Generate.run(SK_Config.getDesignDataSource(),PATH,
			// SK_Generate.getConfiguration(),new SK_MysqlType(),
			// false,SK_Generate.CACHE_MYSQL);
			// SK_Generate.run(SK_Config.getConfigDataSource(),PATH,
			// SK_Generate.getConfiguration(),new SK_MysqlType(),
			// true,SK_Generate.CACHE_MYSQL);
		} else {
			String dataFilePath = System.getProperty("user.dir") + File.separator + "DataFile" + File.separator
					+ "design.xls";
			Workbook workbook = null;
			try {
				workbook = Workbook.getWorkbook(new File(dataFilePath));
				SK_Generate.run(workbook, PATH,PKG, SK_Generate.getConfiguration(), new SK_FileType(), false,
						SK_Generate.CACHE_REDIS, SK_Generate.DATABASE_MYSQL);
			} catch (BiffException | IOException e) {
				e.printStackTrace();
			} finally {
				if (workbook != null) {
					workbook.close();
				}
			}
		}
	}
}
